from redis import StrictRedis
import logging




class Config(object):
    """工程配置信息"""
    DEBUG =True

    """数据库的配置信息"""
    SQLALCHEMY_DATABASE_URI = "mysql://feng:mysql@127.0.0.1:3306/information"
    # 开启数据库跟踪
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    # 当数据库会话对象或者app上下文结束时的时候会对模型进行自动提交操作
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    """redis配置"""
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379
    REDIS_NUM = 7

    """session"""
    SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"

    """session的配置信息"""
    # 调整session存储到redis的配置信息
    # 设置存储session的数据库类型
    SESSION_TYPE = "redis"  # 指定 session 保存到 redis 中
    # 让 cookie 中的 session_id 被加密签名处理
    SESSION_USE_SIGNER = True
    # 使用 redis 的实例
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_NUM)
    # session设置有过期时长的
    SESSION_PERAMNENT = False
    # 设置过期时长 默认值：timedalta(days = 31)
    PERMANENT_SESSION_LIFETIME = 86400  * 2 # session 的有效期，单位是秒


class DevelopementConfig(Config):
    """开发模式下的配置"""
    DEBUG = True
    # 设置开发环境日志级别
    LOG_LEVEL = logging.DEBUG


class ProductionConfig(Config):
    """线上模式下的配置"""
    # 上线后关闭debug模式
    DEBUG = False
    # 设置上线环境日志级别
    LOG_LEVEL = logging.WARNING


# 提供一个接口给外界调用
# 定义配置字典
config_dict = {
    "development": DevelopementConfig,
    "production": ProductionConfig
}